package com.kotodama.application.cqrs.handlers;

import com.kotodama.application.cqrs.queries.Query;

/**
 * 查询处理器接口
 * 
 * @param <Q> 查询类型
 * @param <R> 返回结果类型
 */
public interface QueryHandler<Q extends Query<R>, R> {

    /**
     * 处理查询
     * 
     * @param query 要处理的查询
     * @return 查询结果
     */
    R handle(Q query);

    /**
     * 获取支持的查询类型
     * 
     * @return 查询类型
     */
    Class<Q> getSupportedQueryType();
}